﻿Public Class frmMaszynaSzukanie

    Private mvarSzukajMaszyn As clsInhMaszyna
    Private mvarDbHolder As clsDataBase
    Private mvarWyznUruchomienia As Boolean
    Private mvarNumerPozycji As Integer = 0

    Public Sub New()

        ' To wywołanie jest wymagane przez projektanta.
        InitializeComponent()

        ' Dodaj inicjację po wywołaniu funkcji InitializeComponent().

        mvarDbHolder = New clsDataBase(VAR_CONNECTION_PARAMETERS, VAR_ERROR_HANDLER)
        PobierzWszystkieGrupyMaszyny()
        mvarNumerPozycji = 0

    End Sub

    Private Sub PobierzWszystkieGrupyMaszyny()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsGrupaMaszyny.PobierzWszystkieOpcje(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                cmbGrupaMaszyny.Items.Add(New clsGrupaMaszyny(CStr(lvarRow("id")), CStr(IIf(IsDBNull(lvarRow("nazwa")), -1, lvarRow("nazwa")))))
            Next
        End If

    End Sub


    Private Sub Szukaj()

        Dim lvarCommand As String
        Dim lvarI As Integer
        Dim lvarWyzn As Boolean = False

        If txtNumer.Text = String.Empty And txtNazwa.Text = String.Empty And txtOpis.Text = String.Empty And cmbGrupaMaszyny.SelectedIndex = -1 Then
            lvarCommand = String.Empty
        Else
            lvarCommand = lvarCommand + " WHERE"
            If txtNumer.TextLength > 0 Then
                lvarCommand = lvarCommand + " maszyna.numer = " & txtNumer.Text
                lvarWyzn = True
            End If
            If txtNazwa.TextLength > 0 Then
                If lvarWyzn = True Then
                    lvarCommand = lvarCommand + " AND"
                End If
                lvarCommand = lvarCommand + " UPPER (maszyna.nazwa) LIKE UPPER ('" & txtNazwa.Text & "%')"
                lvarWyzn = True
            End If
            If txtOpis.TextLength > 0 Then
                If lvarWyzn = True Then
                    lvarCommand = lvarCommand + " AND"
                End If
                lvarCommand = lvarCommand + " UPPER (maszyna.opis) LIKE UPPER ('" & txtOpis.Text & "%')"
                lvarWyzn = True
            End If
            If cmbGrupaMaszyny.SelectedIndex <> -1 Then
                If lvarWyzn = True Then
                    lvarCommand = lvarCommand + " AND"
                End If
                lvarCommand = lvarCommand + " maszyna.grupa_maszyny_id = " & CType(cmbGrupaMaszyny.SelectedItem, clsGrupaMaszyny).Id
                lvarWyzn = True
            End If
        End If
        mvarSzukajMaszyn = New clsInhMaszyna
        mvarSzukajMaszyn.Szukaj(mvarDbHolder, VAR_ERROR_HANDLER, lvarCommand)

        dgvInformacje.Rows.Clear()
        If mvarSzukajMaszyn.Maszyna.Count = 0 And mvarWyznUruchomienia = False Then
            MessageBox.Show("Nie ma takiej maszyny.", "WIREMET")
        Else
            For Each lvarMaszyna As clsMaszyna In mvarSzukajMaszyn.Maszyna
                lvarI += 1
                dgvInformacje.Rows.Add(lvarI, lvarMaszyna.Numer, lvarMaszyna.Nazwa, lvarMaszyna.Opis)
                dgvInformacje.Rows(lvarI - 1).Tag = lvarMaszyna
            Next
        End If
        mvarWyznUruchomienia = False
        If dgvInformacje.Rows.Count > 0 Then
            dgvInformacje.ClearSelection()
            dgvInformacje.Rows.Item(mvarNumerPozycji).Selected = True

            If mvarNumerPozycji > 5 Then
                dgvInformacje.FirstDisplayedScrollingRowIndex = mvarNumerPozycji - 5
            Else
                dgvInformacje.FirstDisplayedScrollingRowIndex = 0
            End If
        End If

    End Sub

    Private Sub dgvInformacje_CellMouseDoubleClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvInformacje.CellMouseDoubleClick
        If dgvInformacje.Rows.Count = 0 Then
            MessageBox.Show("Wybierz maszynę", "WIREMET")
        Else
            mvarNumerPozycji = dgvInformacje.SelectedRows(0).Index
            Dim lvarId As Integer
            lvarId = CType(dgvInformacje.SelectedRows(0).Tag, clsMaszyna).Id

            Dim lvarFrm As New frmMaszyna(lvarId)
            With lvarFrm
                .MdiParent = mdiMain.ActiveForm
                .Show()
            End With

        End If

    End Sub

    Private Sub cmdSzukaj_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSzukaj.Click
        Szukaj()
    End Sub

    Private Sub cmdWyczysc_Click(sender As System.Object, e As System.EventArgs) Handles cmdWyczysc.Click

        txtNumer.Text = String.Empty
        txtNazwa.Text = String.Empty
        txtOpis.Text = String.Empty
        cmbGrupaMaszyny.SelectedIndex = -1

    End Sub

    Private Sub cmdDodaj_Click(sender As System.Object, e As System.EventArgs) Handles cmdDodaj.Click

        Dim lvarFrm As New frmMaszyna(0)
        With lvarFrm
            .MdiParent = mdiMain.ActiveForm
            .Show()
        End With

    End Sub

    Private Sub cmdEdytuj_Click(sender As System.Object, e As System.EventArgs) Handles cmdEdytuj.Click

        If dgvInformacje.Rows.Count = 0 Then
            MessageBox.Show("Wybierz maszynę", "WIREMET")
        Else
            mvarNumerPozycji = dgvInformacje.SelectedRows(0).Index
            Dim lvarId As Integer
            lvarId = CType(dgvInformacje.SelectedRows(0).Tag, clsMaszyna).Id
            Dim lvarFrm As New frmMaszyna(lvarId)
            With lvarFrm
                .MdiParent = mdiMain.ActiveForm
                .Show()
            End With
        End If

    End Sub

    Private Sub cmdWyczyscInformacje_Click(sender As System.Object, e As System.EventArgs) Handles cmdWyczyscInformacje.Click
        dgvInformacje.Rows.Clear()
    End Sub

    Private Sub cmdGrupyMaszyny_Click(sender As Object, e As EventArgs) Handles cmdGrupyMaszyny.Click
        Dim lvarFrm As New frmGrupyMaszyny()
        With lvarFrm
            '  .MdiParent = mdiMain.ActiveForm
            .ShowDialog()
        End With
    End Sub

#Region "KeyPress"

    Private Sub txtNumer_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtNumer.KeyPress
        If e.KeyChar = Char.ConvertFromUtf32(Keys.Enter) Then
            Szukaj()
        End If
    End Sub

    Private Sub txtNazwa_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtNazwa.KeyPress
        If e.KeyChar = Char.ConvertFromUtf32(Keys.Enter) Then
            Szukaj()
        End If
    End Sub

    Private Sub txtOpis_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtOpis.KeyPress
        If e.KeyChar = Char.ConvertFromUtf32(Keys.Enter) Then
            Szukaj()
        End If
    End Sub

#End Region

#Region "TextChanged"

    Private Sub txtNumer_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtNumer.TextChanged
        mvarNumerPozycji = 0
    End Sub

    Private Sub txtNazwa_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtNazwa.TextChanged
        mvarNumerPozycji = 0
    End Sub

    Private Sub txtNazwaNiemiecka_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtOpis.TextChanged
        mvarNumerPozycji = 0
    End Sub

#End Region

    Private Sub frmMaterialSzukanie_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
        mvarWyznUruchomienia = True
        Szukaj()
    End Sub

    Private Sub frmMaterialSzukanie_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        mvarDbHolder.Close()
    End Sub

End Class